In object-oriented programming, computer software or firmware is developed by building self-contained modules or "objects" that can be easily replaced, modified, and reused. An object is a unit of self-contained code which comprises both routines and data structures. Each object is treated as a discrete entity, but can be configured and organized to interact with other objects. A transaction object is an object configured to manage one or more transactions. A transaction is a discrete activity performed within a computer system.
In data storage systems, such as disk arrays, transaction objects are commonly implemented in firmware in the disk array controller. The transaction object manages a transaction by maintaining a list of "action items" that are to be performed. One type of transaction object used in a disk array controller is designed to maintain two types of tables or "logs": a roll forward log and a roll back log. The roll forward low lists action items which are to be performed in the future by the controller, whereas the roll back log remembers how to undo action items that have already been performed. The two logs thereby account for action items in often complex transactions involving data movement within the disk array.
Power failure is a serious concern in the design of data storage systems. Data and instructions are often maintained in non-volatile random access memory (NVRAM) during operation in order to preserve the information in the event of power failure. However, power failure occurs unexpectedly. Power might fail in the middle of a partially completed transaction. Upon regaining power, the controller needs to know whether to complete the transaction that was in progress prior to power failure, or to undo it. If the transaction is to be completed, the roll forward log is executed so that the controller finishes those action items listed in the roll forward log. If the transaction is to be undone, the roll back log is executed to revisit those action items performed prior to power failure. Such corrective action, one way or the other, is important for preserving the integrity and correctness of the data being stored and manipulated in the data storage system.